// package com.alibaba.druid.sql.ast;

// import com.alibaba.druid.sql.visitor.SQLASTVisitor;
#pragma once
#include <string>
#include "SQLExprImpl.h"

class SQLASTVisitor;
class Object;

class SQLCurrentTimeExpr_Type
{
public:
  static SQLCurrentTimeExpr_Type CURRENT_TIME;
  static SQLCurrentTimeExpr_Type CURRENT_DATE;
  static SQLCurrentTimeExpr_Type CURDATE;
  static SQLCurrentTimeExpr_Type CURTIME;
  static SQLCurrentTimeExpr_Type CURRENT_TIMESTAMP;
  static SQLCurrentTimeExpr_Type LOCALTIME;
  static SQLCurrentTimeExpr_Type LOCALTIMESTAMP;
  static SQLCurrentTimeExpr_Type SYSDATE;

  string_ptr  name;
  string_ptr  nameLCase;

  SQLCurrentTimeExpr_Type(string_ptr  name);
  int hashCode();
};

class SQLCurrentTimeExpr : public SQLExprImpl
{
public:
  SQLCurrentTimeExpr_Type_ptr type;

  SQLCurrentTimeExpr(SQLCurrentTimeExpr_Type_ptr type);

  SHAREDOBJECT(SQLCurrentTimeExpr);
  void accept0(SQLASTVisitor_ptr v);

  SQLCurrentTimeExpr_Type_ptr getType();

  bool equals(Object_ptr o);

  int hashCode();

  // SQLCurrentTimeExpr *clone();
  virtual SQLObject_ptr clone();
};
